﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio.catalogos;
using Microsoft.Reporting.WebForms;
using Negocio.clases_tontas;

namespace Presentacion.controlasistencia
{
    public partial class reporteBitacora : System.Web.UI.Page
    {
        catalogoPeriodo _objCatalogoPeriodo = new catalogoPeriodo();
        catalogoCarrera _objCatalogoCarrera = new catalogoCarrera();

        protected void Page_Load(object sender, EventArgs e)
        {

            if (Session["CodCarrera"] != null && Session["idDocente"] != null)
            {
                int codigoCarrera = int.Parse(Session["CodCarrera"].ToString());
                int idDocente = int.Parse(Session["idDocente"].ToString());

                int idPeriodoActual = int.Parse(Session["periodo"].ToString());
                if (!IsPostBack)
                {
                    try
                    {
                        var resultDistribucionXCarrera = new catalogoDistribucion().obtenerDistribucion(idDocente).FirstOrDefault();
                        var resulPeriodo = _objCatalogoPeriodo.obtenerPeriodoXDistribucion(resultDistribucionXCarrera.idDistribucion);
                        ddlPeriodo.Items.Clear();
                        ddlPeriodo.Items.Add(new ListItem("SELECCIONE EL PERIODO DESEADO.", ""));
                        foreach (var item in resulPeriodo)
                        {
                            ddlPeriodo.Items.Add(new ListItem(item.nombre, item.idPeriodo.ToString()));
                        }
                    }
                    catch (Exception)
                    {
                        ddlPeriodo.Items.Clear();
                        ddlPeriodo.Items.Add(new ListItem("Seleccione periodo.", ""));
                    }

                    try
                    {
                        var resulCarrera = _objCatalogoCarrera.obtenerCarreraxID(codigoCarrera).FirstOrDefault();

                        lblCarrera.Text = resulCarrera.carrera;
                    }
                    catch (Exception)
                    {
                        lblCarrera.Text = "Error al cargar la carrera";
                    }
                }

            }
            else
            {
                Server.Transfer("404.aspx");
            }
        }

        protected void btnReporteSemestre_Click(object sender, EventArgs e)
        {
            if (Session["CodCarrera"] != null)
            {
                if (ddlPeriodo.SelectedValue == "" || ddlPeriodo.SelectedValue == null)
                {
                    ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Seleccione el periodo deseado.');", true);
                }
                else
                    if (ddlSemestre.SelectedValue == null && ddlSemestre.SelectedValue == "")
                    {
                        ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Seleccione el semestre deseado.');", true);
                    }
                    else
                        if (ddlParalelo.SelectedValue == "" && ddlParalelo.SelectedValue == null)
                        {
                            ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Seleccione el paralelo deseado.');", true);
                        }
                        else
                        {
                            int codigoCarrera = int.Parse(Session["CodCarrera"].ToString());
                            int idPeriodoActual = int.Parse(ddlPeriodo.SelectedValue);
                            int semestre = int.Parse(ddlSemestre.SelectedValue);
                            string paralelo = ddlParalelo.SelectedValue;
                            #region Parametros
                            ReportParameter[] reportParameter = new ReportParameter[3];
                            try
                            {
                                var resulCarrera = _objCatalogoCarrera.obtenerCarreraxID(codigoCarrera).FirstOrDefault();
                                reportParameter[0] = new ReportParameter("carrera", resulCarrera.carrera);
                            }
                            catch (Exception)
                            {
                                reportParameter[0] = new ReportParameter("carrera", "Error al cargar la carrera.");
                            }

                            try
                            {
                                var resulPeriodo = _objCatalogoPeriodo.obtenerPeriodo(idPeriodoActual).FirstOrDefault();
                                reportParameter[1] = new ReportParameter("periodo", resulPeriodo.nombre);
                            }
                            catch (Exception)
                            {
                                reportParameter[1] = new ReportParameter("periodo", "Error al cargar el periodo.");
                            }

                            try
                            {
                                reportParameter[2] = new ReportParameter("semestre", semestre + " " + paralelo);
                            }
                            catch (Exception)
                            {

                                reportParameter[2] = new ReportParameter("semestre", "Error al cargar el semestre");

                            } 
                            #endregion

                            ReportViewer1.LocalReport.DataSources.Clear();
                            ReportDataSource dataSourceBitacoraSemestral = new ReportDataSource();

                            dataSourceBitacoraSemestral.Name = "dtsBitacoraSemestral";
                            dataSourceBitacoraSemestral.Value = new catalogoReporte().obtenerBitacoraXsemestreXparalelo(codigoCarrera, idPeriodoActual, semestre, paralelo);

                            ReportViewer1.LocalReport.DataSources.Add(dataSourceBitacoraSemestral);

                            ReportViewer1.LocalReport.ReportEmbeddedResource = "Presentacion.controlasistencia.reports.reporteBitacoraSemestral.rdlc";
                            ReportViewer1.LocalReport.ReportPath = "controlasistencia/reports/reporteBitacoraSemestral.rdlc";

                            ReportViewer1.LocalReport.SetParameters(reportParameter);
                            var parame = ReportViewer1.LocalReport.GetParameters();
                            ReportViewer1.Visible = true;
                            ReportViewer1.DataBind();
                            ReportViewer1.LocalReport.Refresh();
                            ddlParalelo.ClearSelection();
                            ddlPeriodo.ClearSelection();
                            ddlSemestre.ClearSelection();
                        }
            }
            else
            {
                Server.Transfer("404.aspx");
            }
        }

        protected void btnReporteGeneral_Click(object sender, EventArgs e)
        {

            if (Session["CodCarrera"] != null && Session["idDocente"] != null)
            {

                if (ddlPeriodo.SelectedValue != "" && ddlPeriodo.SelectedValue != null)
                {
                    int codigoCarrera = int.Parse(Session["CodCarrera"].ToString());
                    int idPeriodoActual = int.Parse(ddlPeriodo.SelectedValue);
                    ReportParameter[] reportParameter = new ReportParameter[2];
                    try
                    {
                        var resulCarrera = _objCatalogoCarrera.obtenerCarreraxID(codigoCarrera).FirstOrDefault();
                        reportParameter[0] = new ReportParameter("carrera", resulCarrera.carrera);
                    }
                    catch (Exception)
                    {
                        reportParameter[0] = new ReportParameter("carrera", "Error al cargar la carrera.");
                    }

                    try
                    {
                        var resulPeriodo = _objCatalogoPeriodo.obtenerPeriodo(idPeriodoActual).FirstOrDefault();
                        reportParameter[1] = new ReportParameter("periodo", resulPeriodo.nombre);
                    }
                    catch (Exception)
                    {
                        reportParameter[1] = new ReportParameter("periodo", "Error al cargar el periodo.");
                    }

                    ReportViewer1.LocalReport.DataSources.Clear();
                    ReportDataSource dataSourceBitacora = new ReportDataSource();

                    dataSourceBitacora.Name = "dtsBitacoraGeneral";
                    dataSourceBitacora.Value = new catalogoReporte().obtenerBitacora(codigoCarrera, idPeriodoActual);

                    ReportViewer1.LocalReport.DataSources.Add(dataSourceBitacora);

                    ReportViewer1.LocalReport.ReportEmbeddedResource = "Presentacion.controlasistencia.reports.reporteBitacoraGeneral.rdlc";
                    ReportViewer1.LocalReport.ReportPath = "controlasistencia/reports/reporteBitacoraGeneral.rdlc";

                    ReportViewer1.LocalReport.SetParameters(reportParameter);
                    var parame = ReportViewer1.LocalReport.GetParameters();
                    ReportViewer1.Visible = true;
                    ReportViewer1.DataBind();
                    ReportViewer1.LocalReport.Refresh();
                    ddlParalelo.ClearSelection();
                    ddlPeriodo.ClearSelection();
                    ddlSemestre.ClearSelection();
                }
                else
                {
                    ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Seleccione el periodo deseado.');", true);
                    
                }
            }
            else
            {
                Server.Transfer("404.aspx");
            }
        }
    }
}